import axios from "axios";

//封装网络请求方法
export function request(config) {
  //1:创建axios实例
  const instance = axios.create({
    baseURL:"http://localhost:8081",
    timeout:5000
  });

  //2:拦截器
  //请求拦截
  instance.interceptors.request.use(request =>{
    //如果请求token,请求携带token
    if (window.sessionStorage.getItem('tokenStr')){
      request.headers['Authorization']=window.sessionStorage.getItem('tokenStr');
    }
    console.log("请求拦截成功");
    //如1：当发送网络请求时，在页面中显示一个loading组件，
    // 作为动画显示加载进度条等
    //如2：验证用户是否已经登陆,没有登陆跳转到登陆页面;
    //如3:对请求的参数进行序列化，然后再继续请求等
    //继续请求
    return request;
  },err =>{
    console.log("请求拦截失败");
    //请求失败主要是针对请求配置失败进行判断操作
    //如：用户请求超时
    return err;
  })

  //响应拦截
  instance.interceptors.response.use(response =>{
    console.log("响应成功的拦截");
    //响应成功的拦截，主要是对服务器返回的数据进行过滤操作
    return response.data;
  },err =>{
    console.log("响应失败的拦截");
    //响应失败的拦截，主要是根据status响应状态码进行判断，
    // 跳转到不同的错误展示页面
    //如：
    if(err && err.response){
      switch (err.response.status) {
        case 404:
          err.message = "请求路径错误";
          break;
        case 401:
          err.message = "未授权的访问";
          break;
          //其他请查询错误状态码进行判断
      }
    }
    return err;
  })

  //3:发送网络请求
  return instance(config);
}



